var al_webpart_content = {};

//模板放到前台web模板编辑器的时候需要编码。
function al_encodeEditTemplate(name, tmpl){
	var t = "";
	var s = 0, i = 0;
	var pn = "";
	while((i=tmpl.indexOf('<alpha_webpartarea', s)) != -1){
		t += tmpl.substring(s, i);
		var i1 = tmpl.indexOf('id="', i+'<alpha_webpartarea'.length);
		var i2 = tmpl.indexOf('"', i1+4);
		//取得部件域名字。
		var fullname = tmpl.substring(i1+4, i2);
		pn = fullname.substring(0, fullname.indexOf('@$'));
		t += "[[" + pn + "]]";
		//取得部件域内容。
		var i3 = tmpl.indexOf("</alpha_webpartarea>", i) + '</alpha_webpartarea>'.length;
		al_webpart_content[pn+"@$"+name] = tmpl.substring(i, i3);
		s = i3;
	}

	t += tmpl.substring(s);
	return t;
}


//模板从前台web模板编辑器保存到后台的时候需要解码。
function al_decodeEditTemplate(name, tmpl){
	var t = "";
	var s = 0, i = 0;
	var pn = "";
	while((i=tmpl.indexOf('[[', s)) != -1){
		t += tmpl.substring(s, i);
		var i1 = tmpl.indexOf(']]', i);
		//取得部件域名字。
		pn = tmpl.substring(i+2, i1);
		
		//decode部件域。
		var c = al_webpart_content[pn+"@$"+name];
		t += c ? c : '<alpha_webpartarea id="' + pn+"@$"+name +'"><e/></alpha_webpartarea>';
		s = i1+2;
	}

	t += tmpl.substring(s);
	return t;
}


var al_webpartarea_xml = {};

function al_encodeDesignTemplate(name, tmpl){
	var t = "";
	var s = 0, i = 0;
	var pn = "";
	while((i=tmpl.indexOf('<alpha_webpartarea', s)) != -1){
		t += tmpl.substring(s, i);
		
		var i1 = tmpl.indexOf('id="', i+'<alpha_webpartarea'.length);
		var i2 = tmpl.indexOf('"', i1+4);

		//生成设计态的部件域面板
		pn = tmpl.substring(i1+4, i2);
		var pid = "h_" + pn;  //面板id
		var tid = "t_" + pn;	//title区id
		t += '<DIV id="' + pid + '" al__webpartarea="1" class="al_webpart_dropaccept" style="width:100%;height:60;"><DIV id="'
				+tid+'" UNSELECTABLE="on" style="font-size:12px;color:#CCCCCC;width:100%;background-color:#330099;cursor:move;">部件域:'
				+ pn.substring(0, pn.indexOf('@$')) + '</DIV>';
		t += '<DIV __webpartarea_end=1></DIV></DIV>';

		var i3 = tmpl.indexOf("</alpha_webpartarea>", i) + '</alpha_webpartarea>'.length;
		var xml = createXML();
		xml.loadXML(tmpl.substring(i, i3));
		al_webpartarea_xml[pn] = xml;
		s = i3;
	}

	t += tmpl.substring(s);
	return t;
}

function al_decodeDesignTemplate(name, tmpl){
	var t = tmpl;
	var t = "";
	var s = 0, i = 0;
	while((i=tmpl.indexOf('al__webpartarea', s)) != -1){
		var i1 = tmpl.substring(0, i).lastIndexOf('<DIV');
		t += tmpl.substring(s, i1);
		
		var pn = "";
		var i2 = tmpl.indexOf('id=', i1+'<DIV'.length);
		if(tmpl.substring(i2+4, i2+5) == '"'){
			pn = tmpl.substring(i2+4, tmpl.indexOf('"', i2+4));
		}else{	//在ie下属性值没有引号包着。
			pn = tmpl.substring(i2+3, tmpl.indexOf(' ', i2+3));
		}
		t += al_webpartarea_xml[pn.substring(2)].xml;	//部件域
		
		var i3 = tmpl.indexOf('__webpartarea_end', i);
		i3 = tmpl.indexOf('</DIV>', i3) + '</DIV>'.length;
		i3 = tmpl.indexOf('</DIV>', i3) + '</DIV>'.length;

		s = i3;
	}

	t += tmpl.substring(s);
	return t;
}


//------
//获取所有部件的名字。
//tmpl:解码后的模板。
//返回一个字符串数组。
function al_getWebPartNames(tmpl){
	var names = [];
	var i = 0;
	while((i=tmpl.indexOf('<alpha_webpartarea', i)) != -1){
		var i1 = tmpl.indexOf('id="', i+'<alpha_webpartarea'.length);
		var i2 = tmpl.indexOf('"', i1+4);
		//取得部件域名字。
		names.push(tmpl.substring(i1+4, i2));

		i = tmpl.indexOf("</alpha_webpartarea>", i) + '</alpha_webpartarea>'.length;
	}

	return names;
}